Data for companies or other organizations is commonly stored in networked storage. The networked storage and its associated compute resources can be referred as a data center. The resources of a data center such as storage and access bandwidth are limited. Thus, a common goal for a data center is to improve utilization of the resources of the networked storage, to improve storage utilization and access throughput. Data access to storage is typically slow relative to computer processing speeds. There may be applications within the company or organization that generate large workloads, making many access requests to the data center. Additionally, the number of workloads and the number of requests for each workload can vary significantly over time. Frequently there are levels of services that are either guaranteed or at least expected for workloads accessing the networked storage.
Workloads accessing data from networked storage often have performance requirements for such access; commonly referred to as service level objectives (SLOs). There is an apparent conflict in a system that has dynamic behavior between providing high resource utilization and meeting service level requirements. If an administrator allocates enough resources to guarantee the needs of service level requirements, the allocation of resources generally results in low resource utilization when workload requests are low. If an administrator allocates fewer resources to try to achieve higher resource utilization, the system may frequently violate service level objectives for the workloads. Furthermore, configuring resource allocation to be dynamic based on historical resource utilization only allows dynamism for general trends of work, and does not address specific workload requests. Such a dynamic system would still be unable to respond to dynamic shifts in workloads, especially if those shifts are outside expected historical trends.